package com.cy.store.service.impl;

import com.cy.store.entity.Product;
import com.cy.store.mapper.ProductMapper;
import com.cy.store.service.BaseService;
import com.cy.store.service.IProductService;
import com.cy.store.service.ex.ProductNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @author Luo Sheng
 * @school YiBin university
 * @create 2022-12-09 15:34
 */
@Service
public class ProductServiceImpl extends BaseService implements IProductService {
    @Autowired
    private ProductMapper productMapper;


    /**
     * 查询热销商品的前四名
     * @return 热销商品前四名的集合
     */
    @Override
    public List<Product> findHotList() {
        List<Product> list = productMapper.findHotList();

        // 调用剔除方法
        return getProducts(list);
    }

    /**
     * 根据商品id查询商品详情
     * @param id 商品id
     * @return 匹配的商品详情，如果没有匹配的数据则返回null
     */
    @Override
    public Product findById(Integer id) {
        // 调用持久层方法或偶去product对象
        Product product = productMapper.findById(id);

        // 判断查询结果是否为null
        if (isNull(product)) {
            // 是：抛出ProductNotFoundException
            throw new ProductNotFoundException(PRODUCT_NOTFOUND_MESSAGE);
        }

        // 将查询结果中的部分属性设置为null
        product.setPriority(null);
        product.setCreatedUser(null);
        product.setCreatedTime(null);
        product.setModifiedUser(null);
        product.setModifiedTime(null);

        // 返回查询结果
        return product;
    }

    /**
     * 查询新增商品的前四名
     * @return 新增商品前四名的集合
     */
    @Override
    public List<Product> findNewList() {
        // 调用持久层方法
        List<Product> list = productMapper.findNewList();

        // 调用剔除方法
        return getProducts(list);
    }
}
